package com.inei.evaluaciondelacapacitacion.model.dao;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.inei.evaluaciondelacapacitacion.model.connection.UtilDB;
import com.inei.evaluaciondelacapacitacion.model.entity.Respuesta2_Tema;

public class Respuesta2_TemaDao implements ICRUD_child<Respuesta2_Tema>{
	UtilDB util;
	ContentValues cv;
	Cursor c;
	SQLiteDatabase db;
	Context context;
	Exception e;
	
	public Respuesta2_TemaDao(Context context) {
		this.context = context;
		util = new UtilDB(context);
	}

	@Override
	public List<Respuesta2_Tema> leer(int id) throws Exception {
		// TODO Auto-generated method stub
		List<Respuesta2_Tema> l = null;
		e = null;
		db = util.getReadableDatabase();
		
		c = db.rawQuery("select * from respuesta2_tema where respuesta_id=?", new String[]{id+""});
		
		if(c.moveToFirst()){
			l = new ArrayList<Respuesta2_Tema>();
			do{
				Respuesta2_Tema o = new Respuesta2_Tema();
				o.setRespuesta_id(c.getInt(c.getColumnIndex("respuesta_id")));
				o.setTema_id(c.getInt(c.getColumnIndex("tema_id")));
				o.setP2(c.getString(c.getColumnIndex("P2")));
				o.setP3_H(c.getString(c.getColumnIndex("P3_H")));
				o.setP3_M(c.getString(c.getColumnIndex("P3_M")));
				o.setFec_crea(c.getString(c.getColumnIndex("fec_crea")));
				o.setFec_modi(c.getString(c.getColumnIndex("fec_modi")));
				l.add(o);
			}while(c.moveToNext());
		}else{
			e = new Exception("No hay registros en los Temas");
		}
		
		cerrar();
		if(e!=null){
			throw e;
		}
		return l;
	}

	@Override
	public int crear(int id) throws Exception {
		// TODO Auto-generated method stub
		e = null;
		db = util.getWritableDatabase();
		db.beginTransaction();
		
		cv = new ContentValues();
		for(int i = 0 ; i<38;i++){
			cv.clear();
			cv .put("respuesta_id", id);
			cv .put("tema_id", i+1);
			cv .put("fec_crea", obtenerFecha());
			cv .put("fec_modi", obtenerFecha());
			int ind =(int) db.insert("respuesta2_tema", null, cv);
			
			if(ind<1){
				e = new Exception("INSERT 2: error en el DAO");
				break;
			}
		}
		
		if(e==null){
			db.setTransactionSuccessful();
		}else{
			cerrar();
			throw e;
		}
		cerrar();
		return 38;
	}

	public String obtenerFecha(){
		Calendar c = Calendar.getInstance();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(c.getTime());
	}
	
	@Override
	public int actualizar(List<Respuesta2_Tema> l) throws Exception {
		// TODO Auto-generated method stub
		e = null;
		db = util.getWritableDatabase();
		db.beginTransaction();
		
		cv = new ContentValues();
		
		for(int i = 0 ; i<l.size();i++){
			Respuesta2_Tema o =  l.get(i);
			cv.clear();
			cv .put("P2", o.getP2());
			cv .put("P3_H", o.getP3_H());
			cv .put("P3_M", o.getP3_M());
			cv .put("fec_modi", obtenerFecha());
			int ind = db.update("respuesta2_tema", cv, "respuesta_id=? and tema_id=?", new String[]{""+o.getRespuesta_id(),""+o.getTema_id()});
			
			if(ind<1){
				e = new Exception("UPDATE 2: error en el DAO");
				break;
			}
		}
		
		if(e==null){
			db.setTransactionSuccessful();
		}else{
			cerrar();
			throw e;
		}
		cerrar();
		return 38;
	}

	@Override
	public void cerrar() {
		if (c != null) {
			c.close();
		}
		if (cv != null) {
			cv.clear();
		}
		if (db.inTransaction()) {
			db.endTransaction();
		}
		db.close();
	}
	
}
